
#include <stdio.h>
#include <string.h>

#include "disk_info.h"

#include "constantes.h"

#include "parse.h"

/*typedef struct infdisco{
	char stats[CANT_ITEMS_DISKINFO][BUFFZISE+1];
	stats[i] para i=0 a 11
	deberían transformarse en:
	char tipo[10];
	long readblocks=0;
	long readmerges=0;
	long readsectors=0;
	long read_msecs=0;
	long writblocks=0;
	long writmerges=0;
	long writsectors=0;
	long writ_msecs=0;
	long reqpending=0;
	long rdwr_msecs=0;
	long avq=0;
	pero por el momento son todos char*
	
}info_disco;*/



char * buscar_sata_line(char * sata_line){
	get_line_with_in_between(sata_line,DISK_STAT_FILE,DISCO_SATA);
	return sata_line;
}

char * buscar_ide_line(char * ide_line){
	get_line_with_in_between(ide_line,DISK_STAT_FILE,DISCO_IDE);
	return ide_line;
}

info_disco * get_disk_prop(info_disco *info,char * disco){
	char aux[BUFFZISE+1];
/*	info_disco ide,sata;*/
	int cont=0;
	char *ptrToken;

	if(strcmp(disco,DISCO_SATA)==0){
		buscar_sata_line(aux);
/*	printf("aux= %s\n",aux);*/
		/*si no hay disco sata*/
		if (aux==NULL){
			return NULL;
		}else {
			/*parsear, cargar el struct y devolver el valor*/
			ptrToken = strtok(aux, SEPARADORES_ESPACIO); 
			for(cont=0;cont<CANT_ITEMS_DISKINFO+2;cont++){
		/*		printf("tok: %s\n", ptrToken);*/
					strcpy(info->stats[cont],ptrToken);
					ptrToken = strtok( NULL,SEPARADORES_ESPACIO);
			}
			return info;
		}

	}else if(strcmp(disco,DISCO_IDE)==0){
		buscar_ide_line(aux);
/*	printf("aux= %s\n",aux); */
		/*si no hay disco ide*/
		if (aux==NULL){
			return NULL;
		}else {
			/*parsear, cargar el struct y devolver el valor*/
			ptrToken = strtok(aux, SEPARADORES_ESPACIO); 
			for(cont=0;cont<CANT_ITEMS_DISKINFO+2;cont++){
		/*		printf("tok: %s\n", ptrToken);*/
					strcpy(info->stats[cont],ptrToken);
					ptrToken = strtok( NULL,SEPARADORES_ESPACIO);
			}
			return info;

		}
	}
	else{
		printf("Se ha especificado un disco incorrecto");
		return NULL;
	}

}
